<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js_this赋值</title>
</head>

<body>
    <h2>js_this赋值</h2>
    <p>
        this 取什么值是在函数执行的时候决定的，不是在定义的时候决定的！
    </p>
    <div>
        call（）：第一个参数是this值没有变化，变化的是其余参数都直接传递给函数。在使用call（）方法时，传递给函数的参数必须逐个列举出来。
        <br> apply（）：传递给函数的是参数数组
        <br>bind（）：返回一个新的函数
    </div>
</body>
<script>
    function fn1() {
        console.log(this)
    }
    fn1() //windows
    fn1.call({
            x: 100
        }) //{x:100}  call重新
    const fn2 = fn1.bind({
        x: 200
    })
    fn2()

    function add(c, d) {
        return this.a + this.b + c + d;
    }
    var o = {
        a: 1,
        b: 3
    };
    add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16 
    add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
</script>

</html>